home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_02_07
/
2n07063a
< prev
next >
Wrap
Text File
|
1991-06-01
|
6KB
|
160 lines
#define OK 1
#define FAIL 0
#define bool short
/* ESP Registers: */
#define ESP_REG_READY 0
#define ESP_REG_SID 1
#define ESP_REG_RX1 2
#define ESP_REG_TX1 3
#define ESP_REG_RX2 4
#define ESP_REG_TX2 5
#define ESP_REG_STATUS1 6
#define ESP_REG_CMD1 7
#define ESP_REG_STATUS2 8
#define ESP_REG_CMD2 9
#define ESP_DMA_RX 10
#define ESP_DMA_TX 11
/* ESP Registers Offsets */
#define ESP_REG_READY_OFFS 0x00
#define ESP_REG_SID_OFFS 0x01
#define ESP_REG_RX1_OFFS 0x02
#define ESP_REG_TX1_OFFS 0x02
#define ESP_REG_RX2_OFFS 0x03
#define ESP_REG_TX2_OFFS 0x03
#define ESP_REG_STATUS1_OFFS 0x04
#define ESP_REG_CMD1_OFFS 0x04
#define ESP_REG_STATUS2_OFFS 0x05
#define ESP_REG_CMD2_OFFS 0x05
#define ESP_DMA_RX_OFFS 0x06
#define ESP_DMA_TX_OFFS 0x06
/* Bit flags for ESP Registers ESP_REG_READY */
#define ESP_REG_RX1_RDY 0x01
#define ESP_REG_TX1_RDY 0x02
#define ESP_REG_RX2_RDY 0x04
#define ESP_REG_TX2_RDY 0x08
#define ESP_REG_STATUS1_RDY 0x10
#define ESP_REG_CMD1_RDY 0x20
#define ESP_REG_STATUS2_RDY 0x40
#define ESP_REG_CMD2_RDY 0x80
typedef struct esp_reg {
short reg_offset; /* Offset of register from base address */
short ready_flag; /* Mask for ready status checking */
} ESP_Reg;
/* ESP Command Codes: */
#define ESP_CMD_RESET 0x00 /* General Commands */
#define ESP_CMD_GET_SELF_TEST_RES 0x01
#define ESP_CMD_GET_COMPAT_DIPS 0x02
#define ESP_CMD_DOWNLOAD_CODE 0x03
#define ESP_CMD_SET_INTR_AND_DMA 0x04 /* Setup Commands */
#define ESP_CMD_SET_DMA_TIMEOUT 0x05
#define ESP_CMD_SET_SERVICE_MASK 0x06
#define ESP_CMD_SET_ERROR_MASK 0x07
#define ESP_CMD_SET_FLOW_CTRL_TYPE 0x08
#define ESP_CMD_SET_FLOW_CTRL_CHAR 0x09
#define ESP_CMD_SET_RX_FIFO_LEVEL 0x0A
#define ESP_CMD_SET_FIFO_TRIGGER 0x0B
#define ESP_CMD_SET_RCV_CHAR_TMO 0x0C
#define ESP_CMD_SET_FLOW_OFF_TMO 0x0D
#define ESP_CMD_WRITE_TO_UART 0x0E
#define ESP_CMD_READ_FROM_UART 0x0F
#define ESP_CMD_SET_BAUD_RATE 0x1D
#define ESP_CMD_GET_MODE 0x1E
#define ESP_CMD_SET_MODE 0x10
#define ESP_CMD_CLEAR_DMA_SERV_RQ 0x11 /* Operating Commands */
#define ESP_CMD_GET_ERROR_STATUS 0x12
#define ESP_CMD_GET_UART_STATUS 0x13
#define ESP_CMD_GET_RX_BYTES_AVAIL 0x14
#define ESP_CMD_GET_TX_BYTES_AVAIL 0x15
#define ESP_CMD_INIT_DMA_RECEIVE 0x16
#define ESP_CMD_INIT_DMA_TRANSMIT 0x17
#define ESP_CMD_FLOW_OFF_LOC_XMIT 0x18
#define ESP_CMD_FLOW_ON_LOC_XMIT 0x19
#define ESP_CMD_ISSUE_LINE_BREAK 0x1A
#define ESP_CMD_FLUSH_RX_FIFO 0x1B
#define ESP_CMD_FLUSH_TX_FIFO 0x1C
/* ESP port qualifier OR'ed with CMD code: */
#define ESP_PORT1 0x00
#define ESP_PORT2 0x80
#define ESP_MAX_ENH_BAUD 57600L
#define ESP_MAX_COMP_BAUD 115200L
/* Bit flags for ESP_CMD_GET_SELF_TEST_RES */
#define ESP_TEST_RAM_FAIL 0x01
#define ESP_TEST_ROM_FAIL 0x02
#define ESP_TEST_8K_ROM 0x04
#define ESP_TEST_MCA_BUS 0x08
#define ESP_TEST_2_PORT 0x10
/* Bit flags for ESP_CMD_SET_INTR_AND_DMA */
/* choose one from each group below: */
#define ESP_SET_ENH_INTR_ON 0x01
#define ESP_SET_ENH_IRQ9 0x00
#define ESP_SET_ENH_IRQ3 0x02
#define ESP_SET_ENH_IRQ4 0x04
#define ESP_SET_ENH_IRQ5 0x06
#define ESP_SET_DMA_OFF 0x00
#define ESP_SET_DMA1 0x10
#define ESP_SET_DMA3 0x30
/* Bit flags for ESP_CMD_SET_SERVICE_MASK */
#define ESP_SERV_PORT1_RX_FIFO 0x01
#define ESP_SERV_PORT1_TX_FIFO 0x02
#define ESP_SERV_PORT1_ERROR 0x04
#define ESP_SERV_DMA_TERMINATE 0x08
#define ESP_SERV_PORT2_RX_FIFO 0x10
#define ESP_SERV_PORT2_TX_FIFO 0x20
#define ESP_SERV_PORT2_ERROR 0x40
#define ESP_SERV_DMA_TIMEOUT 0x80
/* Bit flags for ESP_CMD_SET_ERROR_MASK: Byte 1 */
#define ESP_ERR_RCV_CHAR_TMO 0x01
#define ESP_ERR_RCV_FIFO_OVERFLOW 0x02
#define ESP_ERR_PARITY_ERROR 0x04
#define ESP_ERR_FRAMING_ERROR 0x08
#define ESP_ERR_BREAK_DETECT 0x10
#define ESP_ERR_UART_STATUS 0x20
#define ESP_ERR_FLOWED_OFF_TMO 0x40
#define ESP_ERR_BREAK_XMIT_DONE 0x80
#define ESP_ERR_ALL_BYTE_1 0xFF
/* Bit flags for ESP_CMD_SET_ERROR_MASK: Byte 2 */
#define ESP_ERR_REMOTE_TX_F_OFF 0x01
#define ESP_ERR_LOCAL_TX_F_OFF 0x02
#define ESP_ERR_LOCAL_TX_F_ON 0x04
#define ESP_ERR_ALL_BYTE_2 0x07
/* Bit flags for ESP_CMD_GET/SET_MODE */
#define ESP_MODE_ENHANCED 0x01
#define ESP_MODE_COMP_UART_FIFO 0x02
#define ESP_MODE_COMP_RTS_FLOW 0x04
#define ESP_MODE_COMP_DTR_FLOW 0x08
#define ESP_MODE_ENH_RX_DMA 0x10
#define ESP_MODE_ENH_TX_DMA 0x20
typedef struct esp_handle {
short base_addr; /* Base address of ESP registers */
short uart_addr; /* Base address of NS16550 UART */
short dma; /* DMA channel number 0-9 */
short irq; /* IRQ level */
short esp_no; /* Which ESP board */
short port; /* Which port on the ESP board */
} ESP_Handle;